import java.io.File;
import java.util.List;

public class Main {
    // 读取代码输入，进行词法分析和语法分析，是项目的入口
    public static void main(String[] args) {
        String str = ReadFile.readCode(Config.codeFilePath);  //读取c--文件
        try {
            LexicalAnalyzer lexicalAnalyzer = new LexicalAnalyzer(); // 词法分析器
            List<String> tokens = lexicalAnalyzer.analyze(str);  //词法分析
            ReadFile.writeToFile("output/LexicalAnalysis_" + new File(Config.codeFilePath).getName().replace(".sy", "") + ".txt", tokens); //将词法分析结果输出到文件
            
            LR1SyntaxAnalyzer lr1SyntaxAnalyzer = new LR1SyntaxAnalyzer(); // 语法分析器
            List<String> result = lr1SyntaxAnalyzer.analyze(Config.syntaxFilePath, tokens); //语法分析
            ReadFile.writeToFile("output/LR1SyntaxAnalysis_" + new File(Config.codeFilePath).getName().replace(".sy", "") + ".txt", result); //将语法分析结果输出到文件
            
            // 正确性验收用，比对是否写入output文件
            ReadFile.writeToFile("test_output/2lex.tsv", tokens);
            ReadFile.writeToFile("test_output/2gra.tsv", result);

        } catch (LexicalAnalyzeException e) {
            throw new RuntimeException(e);
        }
    }
}